#include<iostream>


template<typename T>
//模板函数
T add(T a,T b)
{   std::cout<<"T"<<std::endl;
    return a+b;
}
template<typename T>
void Swap(T&a,T&b)
{
    T temp=a;
    a=b;
    b=temp;
}
int add(int a,int b)
{
    std::cout<<"int"<<std::endl;
    return a+b;
}



int main()
{
    //模板的显示调用
    //std::cout<<add<int>(1,3)<<std::endl;
    
    //模板的类型推导:编译器自动推导数据的类型
    //std::cout<<add(1.1,3.2)<<std::endl;
    
    //普通函数跟模板函数重载，优先调用普通函数
    //模板函数具有更好的类型匹配，优先模板函数
    //模板的类型必须严格匹配，不能隐式转换
    std::cout<<add(1,2)<<std::endl;

    return 0;
}










